/*
 * Copyright 2007 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package com.google.test.metric.report.chart;

import com.google.test.metric.report.Marker;

public class PieGraph {

  private final int width;
  private final Marker marker;

  public PieGraph(int width, Marker marker) {
    this.width = width;
    this.marker = marker;
  }

  public String render(float...values) {
    StringBuilder out = new StringBuilder();
    float characterWidth = sum(values) / width;
    float marker = 0f;
    float cursor = 0f;
    for (int i = 0; i < values.length; i++) {
      marker += values[i];
      while (cursor < marker) {
        out.append(this.marker.get(i, values[i]));
        cursor += characterWidth;
      }
    }
    return out.toString();
  }

  private float sum(float...values) {
    float sum = 0f;
    for (float value : values) {
      sum += value;
    }
    return sum;
  }

}
